#include <stdio.h>
#include <stdlib.h>
#include <inttypes.h>
#include <unistd.h>
#include <string.h>

// #if预编译

// c99 比较常见的好处：
// inline关键字.inline void fun(){}
// long long
// for (int i=0； i<10； i+ + ) { //1oop body }；可以在函数任意位置定义变量，但goto会影响。
// <stdbool.h> 支持布尔数据类型，定义宏bool，以便兼容于
// <stdint.h> <inttypes.h>定义标准的、可移植的整型类型集合.如int8_t
// __func__ 获得函数字符串常量。
// void foo(int a[ ])与void foo(int *a)相同。
/*
    int a = 10;
    int b[a];
    可变长度数组
*/
// #define printfx(fmt, ...)宏定义可以不限参数个数：... 用##__ VA_ ARGS__来表示这些参数。
// #define X(...) printf(__VA_VRGS__)
// 结构体初始化可以指定成员：struct Node no = {.a=1,b=12.22};
// 对于keil5，可以通过option for target->c/c++->c99 mode来打开

// gcc不支持引用 &

// c11
/*
 匿名结构体/联合体。
struct abc
{
    union//匿名联合体
    {
        char a;
        int b;
    }；
    int c;
};
abc x;
x.a = 1;
union abc
{
    struct//匿名结构体
    {
        char a;
        int b;
    }；
    int c;
};
*/

/*
感觉没用。
void fun()
{
	
}
void fun2(void)
{
	
}
fun(456,"dawd");//正常
fun2(456,"dawd");//error
*/

int main(int argc, char **argv)
{
    int a = 10;
    int b[a];//c99
    for(int i = 0/*c99*/; i < a; i++)
    {
        printf("%d\n", i);
        b[i] = i;
    }
    return 1;
}
